COMPILE_ARCH := $(shell uname -m | sed -e s/i.86/i386/)
TARGET_ARCH ?= $(COMPILE_ARCH)
+nodev ?= n
+
TARGET := $(BASEDIR)/xen
HDRS := $(wildcard $(BASEDIR)/include/xen/*.h)
HDRS += $(wildcard $(BASEDIR)/include/scsi/*.h)
ALL_OBJS += $(BASEDIR)/drivers/char/driver.o
ALL_OBJS += $(BASEDIR)/drivers/pci/driver.o
ALL_OBJS += $(BASEDIR)/drivers/net/driver.o
+ifneq ($(nodev),y)
ALL_OBJS += $(BASEDIR)/drivers/block/driver.o
ALL_OBJS += $(BASEDIR)/drivers/cdrom/driver.o
ALL_OBJS += $(BASEDIR)/drivers/ide/driver.o
ALL_OBJS += $(BASEDIR)/drivers/scsi/driver.o
ALL_OBJS += $(BASEDIR)/drivers/message/fusion/driver.o
+endif
ALL_OBJS += $(BASEDIR)/arch/$(TARGET_ARCH)/arch.o
HOSTCC = gcc
include $(BASEDIR)/arch/$(TARGET_ARCH)/Rules.mk
+ifeq ($(nodev),y)
+CFLAGS += -DNO_DEVICES_IN_XEN
+CFLAGS := $(subst -Werror,,$(CFLAGS))
+endif
+
%.o: %.c $(HDRS) Makefile
$(CC) $(CFLAGS) -c $< -o $@
.long SYMBOL_NAME(do_sched_op)
.long SYMBOL_NAME(do_dom0_op)
.long SYMBOL_NAME(do_network_op) /* 10 */
+#ifndef NO_DEVICES_IN_XEN
.long SYMBOL_NAME(do_block_io_op)
+#else
+ .long SYMBOL_NAME(do_ni_syscall)
+#endif
.long SYMBOL_NAME(do_set_debugreg)
.long SYMBOL_NAME(do_get_debugreg)
.long SYMBOL_NAME(do_update_descriptor)
if ( !setup_network_devices() )
panic("Must have a network device!\n");
net_init(); /* initializes virtual network system. */
+#ifndef NO_DEVICES_IN_XEN
initialize_block_io(); /* setup block devices */
+#endif
#ifdef CONFIG_SMP
wait_init_idle = cpu_online_map;
write_cr3_counted(pagetable_val(current->mm.pagetable));
__sti();
+#ifndef NO_DEVICES_IN_XEN
/* DOM0 gets access to all real block devices. */
#define MAX_REAL_DISKS 256
xd = kmalloc(MAX_REAL_DISKS * sizeof(xen_disk_t), GFP_KERNEL);
BUG();
}
kfree(xd);
+#endif
/* DOM0 gets access to everything. */
physdev_init_dom0(p);
$(MAKE) -C char
$(MAKE) -C pci
$(MAKE) -C net
- $(MAKE) -C block
- $(MAKE) -C cdrom
- $(MAKE) -C ide
- $(MAKE) -C scsi
- $(MAKE) -C message/fusion
+ if [ "$(nodev)" != "y" ]; then \
+ $(MAKE) -C block ; \
+ $(MAKE) -C cdrom ; \
+ $(MAKE) -C ide ; \
+ $(MAKE) -C scsi ; \
+ $(MAKE) -C message/fusion ; \
+ fi
clean:
$(MAKE) -C char clean
int
pci_register_driver(struct pci_driver *drv)
{
+#ifndef NO_DEVICES_IN_XEN
struct pci_dev *dev;
int count = 0;
count += pci_announce_device(drv, dev);
}
return count;
+#else
+ return 0;
+#endif
}
/**
void
pci_unregister_driver(struct pci_driver *drv)
{
+#ifndef NO_DEVICES_IN_XEN
struct pci_dev *dev;
list_del(&drv->node);
dev->driver = NULL;
}
}
+#endif
}
#ifdef CONFIG_HOTPLUG
extern kdev_t xendev_to_physdev(unsigned short xendev);
+#ifndef NO_DEVICES_IN_XEN
extern void init_blkdev_info(struct task_struct *);
extern void unlink_blkdev_info(struct task_struct *);
extern void destroy_blkdev_info(struct task_struct *);
+#else
+#define init_blkdev_info(_p) ((void)0)
+#define unlink_blkdev_info(_p) ((void)0)
+#define destroy_blkdev_info(_p) ((void)0)
+#endif
extern int unregister_blkdev(unsigned int, const char *);
extern int invalidate_device(kdev_t, int);